
dojo.provide("dojo.widget.TreeCommon");dojo.require("dojo.widget.*");dojo.declare("dojo.widget.TreeCommon",null,{listenTreeEvents:[],listenedTrees:{},listenNodeFilter:null,listenTree:function(tree){var _this=this;if(this.listenedTrees[tree.widgetId]){return;}
dojo.lang.forEach(this.listenTreeEvents,function(event){var eventHandler="on"+event.charAt(0).toUpperCase()+event.substr(1);dojo.event.topic.subscribe(tree.eventNames[event],_this,eventHandler);});var filter;if(this.listenNodeFilter){this.processDescendants(tree,this.listenNodeFilter,this.listenNode,true);}
this.listenedTrees[tree.widgetId]=true;},listenNode:function(){},unlistenNode:function(){},unlistenTree:function(tree,nodeFilter){var _this=this;if(!this.listenedTrees[tree.widgetId]){return;}
dojo.lang.forEach(this.listenTreeEvents,function(event){var eventHandler="on"+event.charAt(0).toUpperCase()+event.substr(1);dojo.event.topic.unsubscribe(tree.eventNames[event],_this,eventHandler);});if(this.listenNodeFilter){this.processDescendants(tree,this.listenNodeFilter,this.unlistenNode,true);}
delete this.listenedTrees[tree.widgetId];},checkPathCondition:function(domElement,condition){while(domElement&&!domElement.widgetId){if(condition.call(null,domElement)){return true;}
domElement=domElement.parentNode;}
return false;},domElement2TreeNode:function(domElement){while(domElement&&!domElement.widgetId){domElement=domElement.parentNode;}
if(!domElement){return null;}
var widget=dojo.widget.byId(domElement.widgetId);if(!widget.isTreeNode){return null;}
return widget;},processDescendants:function(elem,filter,func,skipFirst){var _this=this;if(!skipFirst){if(!filter.call(_this,elem)){return;}
func.call(_this,elem);}
var stack=[elem];while(elem=stack.pop()){dojo.lang.forEach(elem.children,function(elem){if(filter.call(_this,elem)){func.call(_this,elem);stack.push(elem);}});}}});